home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1996 January / macformat-033.iso / mac / Shareware City / Graphics / GifScan 1.6 / Sources / GSUtils.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-10-04  |  1.6 KB  |  104 lines  |  [TEXT/MMCC]

  1. #include "GifScan.h"
  2.  
  3. Boolean RectInRect(Rect *r1, Rect *r2)
  4. {
  5.     // Check if r1 is completely inside r2, must be in the same    
  6.     // coordinate system.                                        
  7.     return ( ((r1->left > r2->left) && (r1->right < r2->right)) &&
  8.         ((r1->top > r2->top) && (r1->bottom < r2->bottom)) );
  9. }
  10.  
  11. long GetGestaltResult(OSType gestaltSelector)
  12. {
  13.     long gestaltResult;
  14.  
  15.     if ( Gestalt(gestaltSelector, &gestaltResult) == noErr )
  16.         return(gestaltResult);
  17.     else
  18.         return(0);
  19. }
  20.  
  21. // Compare two pascal-strings. 
  22. short pcmp(StringPtr s1, StringPtr s2)
  23. {
  24.     short    i, len;
  25.     char    j;
  26.  
  27.     if ((len = s1[0]) > s2[0]) len = s2[0];
  28.  
  29.     for (i = 1; i <= len; ++i) {
  30.         j = s1[i] - s2[i];
  31.         if (j) return(j);
  32.     }
  33.  
  34.     return(s1[0] - s2[0]);
  35. }
  36.  
  37. // Return the length of the c-string 
  38. short clen(char *cptr)
  39. {
  40.     short    i;
  41.  
  42.     for (i = 0; cptr[i]; ++i) {};
  43.     return(i);
  44. }
  45.  
  46. void p2c(StringPtr cptr)
  47. {
  48.     unsigned char    len;
  49.  
  50.     BlockMoveData(cptr + 1, cptr, len = *cptr);
  51.     cptr[len] = 0;
  52. }
  53.  
  54. // Convert a c-string to a pascal-string. 
  55. void c2p(char *cptr)
  56. {
  57.     char    len;
  58.  
  59.     BlockMoveData(cptr, cptr + 1, len = clen(cptr));
  60.     *cptr = len;
  61. }
  62.  
  63.  
  64. // Copy a c-string. 
  65. char *ccpy(char *s1, char *s2)
  66. {
  67.     char    *c1, *c2;
  68.  
  69.     c1 = s1;
  70.     c2 = s2;
  71.     while ((*c1++ = *c2++) != 0) {};
  72.     return(s1);
  73. }
  74.  
  75. // Catenate two c-strings. 
  76. char *ccat(char *s1, char *s2)
  77. {
  78.     ccpy(s1 + clen(s1), s2);
  79.     return(s1);
  80. }
  81.  
  82. // Copy a pascal-string. 
  83. void pcpy(StringPtr d, StringPtr s)
  84. {
  85.     short    i;
  86.  
  87.     i = *s;
  88.     do {
  89.         d[i] = s[i];
  90.     } while (i--);
  91. }
  92.  
  93. // Catenate two pascal-strings. 
  94. void pcat(StringPtr d, StringPtr s)
  95. {
  96.     short    i, j;
  97.  
  98.     if (((j = s[0]) + d[0]) > 255)
  99.         j = 255 - d[0];
  100.             // Limit dest string to 255. 
  101.  
  102.     for (i = 0; i < j;) d[++d[0]] = s[++i];
  103. }
  104.